Шаг 259 - Регистр и сложная фильтрация.

В шаге Шаг 248 - Устанавливаем фильтр на движения регистра. Мы обсуждали установку фильтра. Но теперь нам нужно бы сделать сложную фильтрацию по условиям. Вот например такая форма регистра.

259_1.gif (3690 b)

У нас есть 5 позиций по которым можно сделать фильтрацию. Конечно пользователь может захотеть посмотреть ЧерезКого было требование, может посмотреть и КомуПоставляем. А может захотеть и отфильтровать по двум вариантам сразу. Ну не писать же каждый сложные Если. Конечно нет. Вот например есть форма.

259_2.gif (3248 b)

Здесь можно установить КомуПоставляем и Тип ТМЦ. Заведем две переменные.

Процедура Сформировать()
Перем Пр; 
Перем ТипТр;
........

И теперь если Выбор все таки был, то будет устанавливать именно переменную.

Процедура Сформировать()
Перем Пр; 
Перем ТипТр;

 Рег1 = СоздатьОбъект("Регистр.Требования");
 Т = СоздатьОбъект("Таблица");
 Т.ВывестиСекцию("Секция_1");   
 
 Если Предприятие.Выбран()=1 Тогда
  Пр=Предприятие;
 КонецЕсли;  
  		    
 
 Если ТипТребования.Выбран()=1 Тогда
 	ТипТр= ТипТребования;
 КонецЕсли;

.......

А вот как только это было сделано то установим сам фильтр.

Процедура Сформировать()
Перем Пр; 
Перем ТипТр;

 Рег1 = СоздатьОбъект("Регистр.Требования");
 Т = СоздатьОбъект("Таблица");
 Т.ВывестиСекцию("Секция_1");   
 
 Если Предприятие.Выбран()=1 Тогда
  Пр=Предприятие;
 КонецЕсли;  
  		    
 
 Если ТипТребования.Выбран()=1 Тогда
 	ТипТр= ТипТребования;
 КонецЕсли;
 
 Рег1.УстановитьФильтр(Пр,,,,ТипТр);
  
 Рег1.ВыбратьДвижения(ДатаНач,ДатаКон);
 Пока Рег1.ПолучитьДвижение() > 0 Цикл  
 	 Т.ВывестиСекцию("Секция_2");
 	 Пр=Пр+Рег1.Сумма;
КонецЦикла;
 	 Т.ТолькоПросмотр(1); 
 	 Т.ВывестиСекцию("Секция_3");
     Т.Показать() 
КонецПроцедуры

Теперь мы можем проводить фильтрацию c очень сложным условиям.

Hosted by uCoz